#ifndef MASTER_CONSTRAINTS_H
#define MASTER_CONSTRAINTS_H
#include "network.h"
#include "cplexhead.h"
#include <cstring>
#include <ilcplex/cplex.h>


void generate_shortestpath_constraint(CPXENVptr env, CPXLPptr lp, network *net, int *status, cplexhead *header);

void generate_flowbalance_constraint(CPXENVptr env, CPXLPptr lp, network *p, cplexhead *header);

void generate_u_constraint(CPXENVptr env, CPXLPptr lp, network *p, cplexhead *header);

void generate_u_obj(CPXENVptr env, CPXLPptr lp, network *p, cplexhead *header);

void generate_minz_goal(CPXENVptr env, CPXLPptr lp, int *status, cplexhead * h);

void generate_capacity_constraint_z(CPXENVptr env, CPXLPptr lp, network *net, int *status, cplexhead * h);

void generate_capacity_constraint(CPXENVptr env, CPXLPptr lp, network *net, cplexhead *header);

void generate_flow_constraint(CPXENVptr env, CPXLPptr lp, network *p, int *status, cplexhead *head);

void generate_no_split_constraint_z(CPXENVptr env, CPXLPptr lp, network *net, int *status, cplexhead *h);

void fix_y_from_demand(CPXENVptr env, CPXLPptr lp, network *net, int *status, cplexhead *h);

#endif
